/**
 * 文件名：@BooleanConverter.java <br/>
 * 包名：cn.efunbox.afw.core.converter <br/>
 * 项目名：afw-core <br/>
 * @author xtwin <br/>
 */
package cn.efunbox.afw.core.converter;

import cn.efunbox.afw.core.exception.ConversionException;

/**
 * 类名：BooleanConverter  <br />
 *
 * 功能：布尔型转换器
 *
 * @author xtwin <br />
 * 创建时间：2015年12月4日 下午4:49:07  <br />
 * @version 2015年12月4日
 */
public class BooleanConverter extends AbstractConverter {

	/**
	 * 功能: <br/>
	 * 
	 * 重写：xtwin <br/>
	 * 
	 * @version ：2015年12月4日 下午4:49:22<br/>
	 * 
	 * @param original
	 * @param config
	 * @return
	 * @throws Exception <br/>
	 * @see cn.efunbox.afw.core.converter.AbstractConverter#doConvert(java.lang.Object, java.lang.Object)
	 */
	@Override
	protected Object doConvert(Object original, Object config) throws Exception {
		String tmp = String.valueOf(original).toLowerCase();
		
		Boolean value = null;
		if (tmp.matches("true|yes|y|1")) {
			value = Boolean.TRUE;
		} else if (tmp.matches("false|no|n|0")) {
			value = Boolean.FALSE;
		} else {
			throw new ConversionException("not.valid.boolean.value", new Object[] { tmp });
		}
		
		return value;
	}

}
